using System; namespace Example50 { /// /// Summary description for Class1. /// class Class1 { public static bool[] door; public static Random r = new Random(); /// /// The main entry point for the application. /// [STAThread] static void Main(string[] args) { int TRIALS = 1000; door = new bool[4]; for (int j = 1; j <= 10; j++) { // Place car behind random door door[1] = door[2] = door[3] = false; int carBehindDoor = r.Next(1,4); door[carBehindDoor] = true; int win = 0; int lose = 0; // Contestant picks a door at random for (int i = 1; i <= TRIALS; i++) { if (door[r.Next(1,4)]) { win++; } else { lose++; } } Console.WriteLine("Won {0} times out of {1}; winning percentage={2}", win, TRIALS, (1.0 * win) / TRIALS); // Contestant picks a random door, Monty opens door with boot prize, // contestant switches to other door int winSwitch = 0; int loseSwitch = 0; for (int i = 1; i <= TRIALS; i++) { int selectedDoor = r.Next(1,4); switch (selectedDoor) { case 1: // contestant selected door 1 if (door[2]) // Monty opens door 3 selectedDoor = 2; else if (door[3]) // Monty opens door 2 selectedDoor = 3; else // Monty opens either 2 or 3 selectedDoor = 2; break; case 2: // contestant selected door 2 if (door[1]) // Monty opens door 3 selectedDoor = 1; else if (door[3]) // Monty opens door 1 selectedDoor = 3; else // Monty either door 1 or 3 selectedDoor = 1; break; case 3: // contestant selected door 3 if (door[1]) // Monty open door 2 selectedDoor = 1; else if (door[2]) // Monty open door 1 selectedDoor = 2; else // Monty opens either 1 or 2 selectedDoor = 1; break; default: Console.WriteLine("CANNOT HAPPEN!"); break; } if (door[selectedDoor]) winSwitch++; else loseSwitch++; } Console.WriteLine("Won {0} times out {1}; winning percentage={2}", winSwitch, TRIALS, (1.0 * winSwitch) / TRIALS); } } } }